package com.wjw.java.basic.array_;

import java.util.Arrays;

/**
 * 一维数组内存图见：array_jvm.png
 * ----------------------------------------------------------------
 * java中的:
 * 值传递:基本数据类型,使用的是值传递,将基本数据类型a的值,赋值给基本数据类型b,b发生变化不会影响a的值
 * 引用传递：引用类型如数组,使用的是引用传递,将数组arrayA的值,赋值给arrayB,arrayB发生变化后arrayA中的值也会变化
 */
public class ArrayAssign {
    public static void main(String[] args) {
        //1.值传递
        int a = 10;
        int b = a;
        b = 80;
        System.out.println("a:"+a);//10
        System.out.println("b:"+b);//80

        //2.引用传递
        int [] arrayA = {1,2,3,4};
        System.out.println(arrayA);//地址的哈希值:[I@1540e19d
        /**
         * 此时将arrayA的地址值赋值给了arrayB,
         * arrayA和arrayB指向同一堆内存空间
         */
        int [] arrayB = arrayA;
        arrayB[0] = 10;//arrayB修改了同一内存空间中的第一个元素
        System.out.println(Arrays.toString(arrayB));//[10, 2, 3, 4]
        System.out.println(Arrays.toString(arrayA));//[10, 2, 3, 4]
    }
}
